複数の VPS を同時に border として稼動させたい
サーバネットワークではインターネットへの出口として VPS(Linode) を置き,家のルータとの間で VPN を形成してデフォルトルートを広告することでインターネットへの接続を確保している
現状では1ノードのみを border として使っているが,以下のような問題から(本当に必要なのかは別として)スループットに制約がある
インターネットから通信を受けてインターネットにまた流すトンネルとして動作しているので,上下の合計が 1Gbps までという制約になる
暗号処理能力に若干不安がある
WireGuard で 1Gbps 送信するとCPU使用率が張りつく
Linode にバーストの概念があるのかは知らないが安定性を考えるとちょっとだけ気になる
この問題を(IPv4 アドレスを強奪したために)余っているもう1台の Linode に負荷分散することにより解決できないか?というのが今回のお題
暗号処理の負荷分散はそれぞれのVPSとの間で VPN を張り,エンドノードで ECMP で分散することにより達成する
WireGuard なら IV が毎回渡されるので各パケットを分散することによってより公平に負荷を分散させられるような気がしないでもない
Linode は内向きが異様に強い(40Gbps)ので,外向きの通信を分散することだけ考えればいい
前提
高速なノード間通信
Linode の場合 VLANs(まだない)が該当するのでは
インターネットから受信したノードがパケットを上り帯域を消費せずに他ノードに分散させるために必要
速くなかったら解散
DSR
IP Sharing を実行しているノード間で,共有しているアドレスへの経路を獲得していない(=スタンバイ状態)ノードが,そのアドレスをソースとして送信できる
パケット送信を分散するのには不可欠
できなかったら以下略
#TODO
上のやつが実験でうまくいったら書きます
方向
それぞれの VPS で VPN を張る
VPS の間で VLAN を使って経路交換しておく
上りはそのまま
入ってきたノードから出す
v4の場合は一応 NAT のことを考えて特定ノードに集めることになるはず
NAT のスループットは十分なので conntrack sync だけできてれば問題ないと思っている
分散を考えるなら生きているノードから出口を分散しつつ出すという感じになりそう
難しくない?
下りは分散する必要がある
それぞれの VPN の対向からネットワーク内のアドレスを広報すると,各ノードからは全てのノードの VPN トンネルが経路として見えるので ECMP で分散させる
v4 はそのノードで NAT が動いていることを前提にすれば同じ